package cn.south.campus.business.service;

import cn.south.campus.business.model.entity.WalletLog;
import cn.south.campus.business.model.enums.WalletEnums;
import cn.south.campus.business.model.req.WalletLogReq;
import cn.south.campus.business.model.vo.WalletLogVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;

/**
 * <p>
 *
 * </p>
 *
 * @author chow
 * @since 2024/11/14 13:31
 */
public interface WalletLogService extends IService<WalletLog> {

    /**
     * 插入钱包日志
     *
     * @param amount  金额
     * @param userId  用户id
     * @param orderNo 订单号
     * @param enums   类型
     */
    void insertLog(BigDecimal amount, Long userId, String orderNo, WalletEnums.WalletTypeEnums enums);
    /**
     * 插入钱包日志
     *
     * @param amount  金额
     * @param userId  用户id
     * @param orderNo 订单号
     * @param enums   类型
     */
    void insertLog(BigDecimal amount, Long userId, String orderNo, WalletEnums.WalletTypeEnums enums, WalletEnums.WalletLogStatusEnums statusEnums);
    /**
     * 查询钱包记录
     *
     * @param req 查询条件
     * @return 钱包记录
     */
    IPage<WalletLogVo> queryRecord(WalletLogReq req);

    /**
     * 删除钱包日志
     * @param bizNo 业务号
     */
    void deleteLog(Long userId, String bizNo);

    /**
     * 更新钱包日志
     *
     * @param bizNo       业务号
     * @param statusEnums 状态
     */
    void updateLog(Long userId, String bizNo, WalletEnums.WalletLogStatusEnums statusEnums);
}
